<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<% response.setContentType("text/html; charset=UTF-8");%>
<% request.setCharacterEncoding("utf-8");%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.Random" %>
<%@ page import="javax.xml.parsers.*" %>
<%@ page import="org.w3c.dom.*" %>
<%@ page import="java.io.File" %>
<%
	Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(getServletContext().getRealPath("/") + "web.xml"));
	doc.getDocumentElement().normalize();
	String dbhost = doc.getElementsByTagName("host").item(0).getTextContent();
	String dbport = doc.getElementsByTagName("port").item(0).getTextContent();
	String dbuser = doc.getElementsByTagName("user").item(0).getTextContent();
	String dbpass = doc.getElementsByTagName("pass").item(0).getTextContent();
	String dbname = doc.getElementsByTagName("database").item(0).getTextContent();
	String dbconnString = "jdbc:mysql://" + dbhost + ":" + dbport + "/" + dbname + "?setUnicode=true&characterEncoding=UTF-8";
	Class.forName("com.mysql.jdbc.Driver").newInstance();
	Connection dbconn = DriverManager.getConnection(dbconnString, dbuser, dbpass);
	Statement query = dbconn.createStatement();
	Statement query2 = dbconn.createStatement();
%>

<%!
	public int randomInt(int a, int b) // random một số nguyên trong khoảng (a, b)
	{
		Random random = new Random();
		while (true) {
			int result = random.nextInt() % b;
			if (result >= a) {
				return result;
			}
		}
	}
%>

<%
	/*
	 * THÊM 1 ĐỀ THI MỚI
	 */
	String maLDT = request.getParameter("maldt");
	if (maLDT != null) {
		try {
			ResultSet rs = query.executeQuery("select max(maDT) as max from dethi");
			int max = 0;
			rs.next();
			max = rs.getInt("max");
			rs.close();
			String maDT = Integer.toString(max + 1);
			query.executeUpdate("insert into dethi (maDT, loaidethi) values ( " + maDT + " , " + maLDT + " )");
			out.println("Phát sinh thành công mã đề : " + maDT); // phát sinh thành công

			/*
			 * THÊM CÁC CÂU HỎI CHO ĐỀ THI MỚI THÊM
			 */
			rs = query.executeQuery("select * from loaidethi where maLDT = " + maLDT);
			rs.next();
			int socaude = rs.getInt("socaude");
			int socautb = rs.getInt("socautb");
			int socaukho = rs.getInt("socaukho");
			rs.close();

			out.println("Số lượng câu hỏi dễ : " + Integer.toString(socaude));
			out.println("Số lượng câu hỏi trung bình : " + Integer.toString(socaude));
			out.println("Số lượng câu hỏi khó : " + Integer.toString(socaude));

			int thutu = 1;
			
			// Thêm các câu dễ
			ResultSet rs2 = query2.executeQuery("select count(*) as soluong from cauhoi where dokho = 1");
			rs2.next();
			int soluong = rs2.getInt("soluong");
			rs2.close();
			for (int i = 0; i < socaude;) {
				int random = randomInt(0, soluong);
				rs2 = query2.executeQuery("select * from cauhoi where dokho = 1 LIMIT " + Integer.toString(random) + " , 20");
				while (rs2.next()) {
					String maCH = Integer.toString(rs2.getInt("maCH"));
					try {
						query.executeUpdate("insert into ct_dethi (dethi, cauhoi, thutu) values ( " + maDT + " , " + maCH + " , " + Integer.toString(thutu) + " )");
						out.println("Đã thêm 1 câu hỏi dễ. Số thứ tự : " + Integer.toString(thutu) + ". Mã câu hỏi : " + maCH);
						thutu++;
						i++;
						break;
					} catch (Exception e) {
					}
				}
				rs2.close();
			}
			out.println("Đã thêm xong các câu hỏi dễ");

			// Thêm các câu trung bình
			rs2 = query2.executeQuery("select count(*) as soluong from cauhoi where dokho = 2");
			rs2.next();
			soluong = rs2.getInt("soluong");
			rs2.close();
			for (int i = 0; i < socautb;) {
				int random = randomInt(0, soluong);
				rs2 = query2.executeQuery("select * from cauhoi where dokho = 2 LIMIT " + Integer.toString(random) + " , 20");
				while (rs2.next()) {
					String maCH = Integer.toString(rs2.getInt("maCH"));
					try {
						query.executeUpdate("insert into ct_dethi (dethi, cauhoi, thutu) values ( " + maDT + " , " + maCH + " , " + Integer.toString(thutu) + " )");
						out.println("Đã thêm 1 câu hỏi trung bình. Số thứ tự : " + Integer.toString(thutu) + ". Mã câu hỏi : " + maCH);
						thutu++;
						i++;
						break;
					} catch (Exception e) {
					}
				}
				rs2.close();
			}
			out.println("Đã thêm xong các câu hỏi trung bình");

			// Thêm các câu khó
			rs2 = query2.executeQuery("select count(*) as soluong from cauhoi where dokho = 3");
			rs2.next();
			soluong = rs2.getInt("soluong");
			rs2.close();
			for (int i = 0; i < socaukho;) {
				int random = randomInt(0, soluong);
				rs2 = query2.executeQuery("select * from cauhoi where dokho = 3 LIMIT " + Integer.toString(random) + " , 20");
				while (rs2.next()) {
					String maCH = Integer.toString(rs2.getInt("maCH"));
					try {
						query.executeUpdate("insert into ct_dethi (dethi, cauhoi, thutu) values ( " + maDT + " , " + maCH + " , " + Integer.toString(thutu) + " )");
						out.println("Đã thêm 1 câu hỏi khó. Số thứ tự : " + Integer.toString(thutu) + ". Mã câu hỏi : " + maCH);
						thutu++;
						i++;
						break;
					} catch (Exception e) {
					}
				}
				rs2.close();
			}
			out.println("Đã thêm xong các câu hỏi khó");

			response.sendRedirect("thi_lambai.jsp?maDT=" + maDT);

		} catch (Exception e) {
			out.println(e.getMessage());
		}
	}
%>

<% dbconn.close();%>